Backdrop

프로그래머스 ▸ 코딩테스트 입문

종이 자르기
0

문제 설명

머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다.

스크린샷 2022-07-25 오후 4.49.44.png

정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 0 < M, N < 100
  • 종이를 겹쳐서 자를 수 없습니다.

입출력 예

MNresult
223
259
110

입출력 예 설명

입출력 예 #1

  • 본문과 동일합니다.

입출력 예 #2

  • 가로 2 세로 5인 종이는 가로로 1번 세로로 8번 총 가위질 9번이 필요합니다.

입출력 예 #3

  • 이미 1 * 1 크기이므로 0을 return 합니다.

풀이

종이를 최소로 자르려면 처음에는 한 방향으로 끝에서 끝까지 잘라야 해요. 그림처럼 수직으로 자른다면 M - 1번 자르게 돼요. 그 다음에는 수직으로 자른 각각의 종이를 수평으로 잘라요. 수평으로 자르는 횟수는 각각 N - 1번이에요.

따라서 총 자르는 횟수는 M - 1 + M * (N - 1) = M * N - 1번이에요.

코드

def solution(M, N):
    return M * N - 1